home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Tools / Turbo Pascal V7 / BGIDEMOS.ZIP / BGILINK.PAS < prev   
Pascal/Delphi Source File  |  1992-11-03  |  5KB  |  131 lines

  1. {************************************************}
  2. {                                                }
  3. {   BGI Demo Program                             }
  4. {   Copyright (c) 1992 by Borland International  }
  5. {                                                }
  6. {************************************************}
  7.  
  8.  
  9. program BgiLink;
  10.  
  11. { This program demonstrates how to link graphics driver and font files
  12.   into an EXE file. BGI graphic's drivers and fonts are kept in
  13.   separate disk files so they may be dynamically loaded at runtime.
  14.   However, sometimes it is preferable to place all auxiliary files
  15.   directly into an .EXE. This program, along with its make file
  16.   (BGILINK.MAK) and two units (BGIDRIV.PAS and BGIFONT.PAS) links all
  17.   the drivers and fonts directly into BGILINK.EXE.
  18.  
  19.   Have these 3 programs in the current drive or directory, or
  20.   have them available via a path:
  21.  
  22.     MAKE.EXE     - Make utility that will build BGILINK.EXE
  23.     BINOBJ.EXE   - utility program to convert any file into an .OBJ file
  24.  
  25.   Place in the current drive or directory the following files:
  26.  
  27.     BGILINK.PAS  - this sample program
  28.     BGIDRIV.PAS  - Pascal unit that will link in all BGI drivers
  29.     BGIFONT.PAS    - Pascal unit that will link in all BGI fonts
  30.     *.CHR        - BGI font files
  31.     *.BGI        - BGI driver files
  32.     BGILINK.MAK  - "make" file that builds BGIDRIV.TPU, BGIFONT.TPU, and
  33.                    finally BGILINK.EXE
  34.  
  35.   DIRECTIONS:
  36.   1. Run MAKE on the BGILINK.MAK file by typing the following command
  37.      at a DOS prompt:
  38.  
  39.        make -fBGIlink.mak
  40.  
  41.      Using BINOBJ.EXE, this will first build .OBJ files out of the driver
  42.      files (*.BGI) and then call Turbo Pascal to compile BGIDRIV.PAS.
  43.      Next, the font files (*.CHR) will be converted to .OBJs and
  44.      BGIFONT.PAS will be compiled. Finally, BGILINK.PAS will be compiled
  45.      (it uses BGIDRIV.TPU and BGIFONT.TPU).
  46.  
  47.   2. Run BGILINK.EXE. It contains all the drivers and all the fonts, so it
  48.      will run on any system with a graphics card supported by the Graph
  49.      unit (CGA, EGA, EGA 64 K, EGA monochrome, Hercules monochrome,
  50.      VGA, MCGA, IBM 3270 PC and AT&T 6400).
  51.  
  52.   EXPLANATION
  53.  
  54.     BGILINK.PAS uses BGIDRIV.TPU and BGIFONT.TPU in its uses statement:
  55.  
  56.       uses BGIDriv, BGIFont;
  57.  
  58.     Then, it "registers" the drivers it intends to use (in this case,
  59.     all of them, so it will run on any graphics card). Then it registers
  60.     all of the fonts it will use (again all of them, just for demonstration
  61.     purposes) and finally it does some very modest graphics.
  62.  
  63.     You can easily modify BGILINK.PAS for your own use by commenting out
  64.     the calls to RegisterBGIdriver and RegisterBGIfont for drivers and
  65.     fonts that your program doesn't use.
  66.  
  67.     For a detailed explanation of registering and linking drivers and fonts,
  68.     refer to the RegisterBGIdriver and RegisterBGIfont descriptions in
  69.     the printed documentation.
  70. }
  71.  
  72. uses Graph,     { library of graphics routines }
  73.      BGIDriv,   { all the BGI drivers }
  74.      BGIFont;   { all the BGI fonts }
  75. var
  76.   GraphDriver, GraphMode, Error : integer;
  77.  
  78. procedure Abort(Msg : string);
  79. begin
  80.   Writeln(Msg, ': ', GraphErrorMsg(GraphResult));
  81.   Halt(1);
  82. end;
  83.  
  84. begin
  85.   { Register all the drivers }
  86.   if RegisterBGIdriver(@CGADriverProc) < 0 then
  87.     Abort('CGA');
  88.   if RegisterBGIdriver(@EGAVGADriverProc) < 0 then
  89.     Abort('EGA/VGA');
  90.   if RegisterBGIdriver(@HercDriverProc) < 0 then
  91.     Abort('Herc');
  92.   if RegisterBGIdriver(@ATTDriverProc) < 0 then
  93.     Abort('AT&T');
  94.   if RegisterBGIdriver(@PC3270DriverProc) < 0 then
  95.     Abort('PC 3270');
  96.  
  97.  
  98.   { Register all the fonts }
  99.   if RegisterBGIfont(@GothicFontProc) < 0 then
  100.     Abort('Gothic');
  101.   if RegisterBGIfont(@SansSerifFontProc) < 0 then
  102.     Abort('SansSerif');
  103.   if RegisterBGIfont(@SmallFontProc) < 0 then
  104.     Abort('Small');
  105.   if RegisterBGIfont(@TriplexFontProc) < 0 then
  106.     Abort('Triplex');
  107.  
  108.   GraphDriver := Detect;                  { autodetect the hardware }
  109.   InitGraph(GraphDriver, GraphMode, '');  { activate graphics }
  110.   if GraphResult <> grOk then             { any errors? }
  111.   begin
  112.     Writeln('Graphics init error: ', GraphErrorMsg(GraphDriver));
  113.     Halt(1);
  114.   end;
  115.  
  116.   MoveTo(5, 5);
  117.   OutText('Drivers and fonts were ');
  118.   MoveTo(5, 20);
  119.   SetTextStyle(GothicFont, HorizDir, 4);
  120.   OutText('Built ');
  121.   SetTextStyle(SmallFont, HorizDir, 4);
  122.   OutText('into ');
  123.   SetTextStyle(TriplexFont, HorizDir, 4);
  124.   OutText('EXE ');
  125.   SetTextStyle(SansSerifFont, HorizDir, 4);
  126.   OutText('file!');
  127.   Rectangle(0, 0, GetX, GetY + TextHeight('file!') + 1);
  128.   Readln;
  129.   CloseGraph;
  130. end.
  131.